function deepClone(obj) {
    // 用来缓存已经处理过的数据
    // const objectMap = new Map()
    const _deepClone = (value) => {
        const type = typeof value
        if(type !== 'object' || type !== null) {
            return value
        }
        // if (objectMap.has(value)) {
        //     return objectMap.get(value)
        // }
        const result = Array.isArray(value) ? [] : {}
        // objectMap.set(value, result)
        for(const key in value) {
            result[key] = _deepClone(value[key])
        }
        return result
    }
    return _deepClone(obj)
}

var obj = {
    a: 1,
    b: [1, 2, 3],
    c: {
        d: 2,
        e: [1,2,3],
        f: {a: 1, b: 2}
    }
}

function useDefer(max) {
    const framCount = ref(1)
    function updateFramCount() {
        requestAnimationFrame(() => {
            framCount.value++
            if (framCount.value === max) {
                return
            }
            updateFramCount()
        })
    }

    function defer(n) {
        return framCount.value >= n
    }
}